 package org.zfes.snowier.zbss.xzy.face;

import org.zfes.snowier.zbss.xzy.face.enums.DetectMode;
import org.zfes.snowier.zbss.xzy.face.enums.DetectOrient;

public class EngineConfiguration{
   private FunctionConfiguration functionConfiguration = FunctionConfiguration.builder().build();
   private Integer detectFaceMaxNum = Integer.valueOf(10);
   private Integer detectFaceScaleVal = Integer.valueOf(16);
   private DetectMode detectMode = DetectMode.ASF_DETECT_MODE_IMAGE;
   private DetectOrient detectFaceOrientPriority = DetectOrient.ASF_OP_0_HIGHER_EXT;
   public FunctionConfiguration getFunctionConfiguration() {
     return this.functionConfiguration;
   }
   public void setFunctionConfiguration(FunctionConfiguration functionConfiguration) {
     this.functionConfiguration = functionConfiguration;
   }
   public Integer getDetectFaceMaxNum() {
     return this.detectFaceMaxNum;
   }
   public void setDetectFaceMaxNum(Integer detectFaceMaxNum) {
     this.detectFaceMaxNum = detectFaceMaxNum;
   }
   public Integer getDetectFaceScaleVal() {
     return this.detectFaceScaleVal;
   }
   public void setDetectFaceScaleVal(Integer detectFaceScaleVal) {
     this.detectFaceScaleVal = detectFaceScaleVal;
   }
   public DetectMode getDetectMode() {
     return this.detectMode;
   }
   public void setDetectMode(DetectMode detectMode) {
     this.detectMode = detectMode;
   }
   public DetectOrient getDetectFaceOrientPriority() {
     return this.detectFaceOrientPriority;
   }
   public void setDetectFaceOrientPriority(DetectOrient detectFaceOrientPriority) {
     this.detectFaceOrientPriority = detectFaceOrientPriority;
   }

   private EngineConfiguration(Builder builder) {
     this.functionConfiguration = builder.functionConfiguration;
     this.detectFaceMaxNum = builder.detectFaceMaxNum;
     this.detectFaceScaleVal = builder.detectFaceScaleVal;
     this.detectMode = builder.detectMode;
     this.detectFaceOrientPriority = builder.detectFaceOrientPriority;
   }
   public EngineConfiguration() {}
   public static Builder builder() {
     return new Builder();
   }
   
   public static final class Builder{
     private FunctionConfiguration functionConfiguration = FunctionConfiguration.builder().build();
     
     private Integer detectFaceMaxNum = Integer.valueOf(10);
     
     private Integer detectFaceScaleVal = Integer.valueOf(16);
     
     private DetectMode detectMode = DetectMode.ASF_DETECT_MODE_IMAGE;
     
     private DetectOrient detectFaceOrientPriority = DetectOrient.ASF_OP_0_HIGHER_EXT;
     public EngineConfiguration build() {
       return new EngineConfiguration(this);
     }
     public Builder functionConfiguration(FunctionConfiguration functionConfiguration) {
       this.functionConfiguration = functionConfiguration;
       return this;
     }
     public Builder detectFaceMaxNum(Integer detectFaceMaxNum) {
       this.detectFaceMaxNum = detectFaceMaxNum;
       return this;
     }
 
     public Builder detectFaceScaleVal(Integer detectFaceScaleVal) {
       this.detectFaceScaleVal = detectFaceScaleVal;
       return this;
     }
 
     public Builder detectMode(DetectMode detectMode) {
       this.detectMode = detectMode;
       return this;
     }
 
     public Builder detectFaceOrientPriority(DetectOrient detectFaceOrientPriority) {
       this.detectFaceOrientPriority = detectFaceOrientPriority;
       return this;
     }
     
     private Builder() {}
   }
 }


